package gespap2009;
/*
 * Modificado por guliana: 16/04/2009
 */
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

public class Cliente {
	
	private String telefono;
	private String nombre;
	private String direccion;
    private String correo;
    private String dni;
	private List<Reserva> reservas;
     private List<Pedido> pedidos;
	
	Cliente (String nombre, String direccion, String telefono,
            String correo, String dni) {
		
        setNombre(nombre);
		setDireccion(direccion);
		setTelefono(telefono);
        setCorreo(correo);
        setDni(dni);
		setReservas();
        setPedidos();
	}

    Cliente() {
    }

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getNombre() {
		return this.nombre;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public String getTelefono() {
		return this.telefono;
	}

	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}

	public String getDireccion() {
		return this.direccion;
	}
   public void setCorreo(String correo) {
       this.correo = correo;
    }
    public String getCorreo() {
       return this.correo;
    }
    public String getDni() {
       return this.dni;
    }
	public List<Reserva> getReservas() {
		return this.reservas;
	}
    public List<Pedido> getPedidos() {
		return this.pedidos;
	}
    public List<EjemplarArticulo> getReserva(String fecha){

        int i;
        Boolean encontrado = false;
        String fecha_reserva;
        List<EjemplarArticulo> ejemplares_temp = new ArrayList<EjemplarArticulo>();

		for (i=0; i<this.reservas.size(); i++){
			fecha_reserva = this.reservas.get(i).getFecha();
            if (fecha_reserva.equalsIgnoreCase(fecha)){
				System.out.println("Encontrada la reserva del día " + fecha);
				encontrado = true;
                ejemplares_temp = this.reservas.get(i).getEjemplaresReservados();
                break;
			}
        }

        if (!encontrado){
            System.out.println("No se ha encontrado reservas en la fecha: " +
                    fecha);
            ejemplares_temp = null;
        }

        return ejemplares_temp;

    }

    public void crearReserva(String fecha) {
        Reserva reserva = new Reserva(fecha);
        this.reservas.add(reserva);
        System.out.println("Se ha creado una reserva sin fecha a nombre de " + this.nombre);
        return;
    }
    public void crearReserva(String fecha,
            List<EjemplarArticulo> ejemplaresAReservar){

        Reserva reserva = new Reserva(fecha, ejemplaresAReservar);
        this.reservas.add(reserva);
        System.out.println("Se ha creado una reserva a nombre de " + this.nombre);
        return;

    }

    /*Método que crea un pedido para un cliente, de n artículos
     * si no hay artículos en la lista dará error.
     */
     public void crearPedido(List<Articulo> articulos,Calendar fechap,
                Calendar horap){
         if(articulos.isEmpty()){
            System.out.println("ERROR: no hay artículos a pedir");
         }else{
            Pedido nuevoPedido = new Pedido(fechap , articulos, horap);
            pedidos.add(nuevoPedido);
         }
     }

     /*
	 * Métodos privados.
	 */
    private void setDni(String dni) {
       this.dni = dni;
    }

    private void setPedidos() {
        this.pedidos = new ArrayList<Pedido>();

    }
    private void setReservas(){
		this.reservas = new ArrayList<Reserva>();
	}
	
	
	


     /**Método auxiliar**/
        public void imprimirPedidos(){

            for(int i = 0; i < this.pedidos.size(); i++){
               pedidos.get(i).imprimirPedido();


            }
        }
}
